package Practica2ej11;

import java.util.Iterator;
import java.util.LinkedList;

public abstract class Comunicacion {
	/* Clase abstracta comunicacion se utiliza para los diferentes tipos de comunicacion que aceptan los dispositivos */
	Comunicacion otroDispositivo;
	/* Utiliza una linkedList para almacenar las palabras que se envien */
	LinkedList<String> memoria = new LinkedList<String>();
	/* Por defecto la capacidad maxima de la memoria es de 1024 palabras */
	int maximaCapacidadMemoria = 1024;
	
	public void setConexion(Comunicacion otroDisp){
		/* Setea la conexion de la comunicacion */
		this.otroDispositivo = otroDisp;	
		if (otroDisp!= null)
			otroDisp.otroDispositivo = this;
	}
	public abstract void enviarDatos(String palabra);
	/* Metodo abstracto que se implementara en cada comunicacion, las comunicaciones son diferentes */
	
	public void setCapacidadMemoria(int capacidad){
		/* La memoria que almacena cada dispositivo es controlada por el usuario */
		this.maximaCapacidadMemoria = capacidad;
	}
	
	public String recibirDatos(){
		/* Devuelve la cadena de datos que se envio ultima */
		String datos = null;
		try {
			datos = this.memoria.getFirst();
			//this.memoria.removeFirst();
		} catch (Exception e) {
			
		}
		return datos;
	}
	
	public void imprimirMemoria(){
		/* Imprime los datos almacenados en memoria */
		String palabra;
		Iterator<String> iter = memoria.iterator();
		
		while (iter.hasNext()){
			palabra = iter.next();
			System.out.println("posicion: "+memoria.indexOf(palabra)+" contenido: "+ palabra.toString());
		}
	}
}
